<template>
  <el-table
    ref="multipleTable"
    :data="innerData"
    tooltip-effect="dark"
    style="width: 100%"
    @selection-change="handleSelectionChange"
  >
    <!-- 复选列 -->
    <el-table-column type="selection" width="55" />

    <!-- 动态表头：按父组件传入的 headers 顺序渲染 -->
    <el-table-column
      v-for="col in headers"
      :key="col.prop"
      :prop="col.prop"
      :label="col.label"
      :width="col.width"
      :show-overflow-tooltip="col.tooltip"
    >
      <!-- 需要自定义模板的情况（如日期列） -->
      <template v-if="col.scoped" #default="scope">
        <slot :name="col.scoped" :row="scope.row" />
      </template>
    </el-table-column>
  </el-table>
</template>

<script>
export default {
  props: {
    headers: { type: Array, required: true }, // 列配置
    data: { type: Array, required: true }, // 行数据
  },
  computed: {
    // 避免直接修改父组件数据
    innerData() {
      return this.data;
    },
  },
  methods: {
    handleSelectionChange(val) {
      this.$emit("selection-change", val); // 把勾选结果抛给父组件
    },
    /* 暴露给父组件手动调用 */
    toggleRowSelection(row, selected) {
      this.$refs.multipleTable.toggleRowSelection(row, selected);
    },
    clearSelection() {
      this.$refs.multipleTable.clearSelection();
    },
  },
};
</script>